// 应用代码首先调用fopen函数，使用参数"a+b"（流只能在文件尾部写方式）打开argv指定的文件
// 然后连续10次在文件尾部写入writebuf[17]内部的字符串，缓冲区的大小由sizeof函数返回
// 这个值与循环次数计数器i相乘得到最后的总偏移量，使用fseek函数来定位当前写入的偏移量
// 使用SEEK_SET作为fseek函数的定位操作
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
	
	int i=0,len=0;

	FILE *fp;

	char writebuf[17] = "This is a test!\n";

	if(argc != 2){
		printf("Please input the current para!\n");
		return -1;
	}

	// 使用fopen打开文件,以追加模式打开
	fp = fopen(*(argv+1), "a+b");

	// 使用ftell函数获取偏移量, ftell函为返回所指定流的当前文件位置
	printf("ftell(fp) = %ld\n", ftello(fp));
	
	if(fp == NULL){
		printf("打开文件%s失败!\n", *(argv+1));
		return -2;
	}

	// 向文件中写入writebuf的数据
	i = 0;
	len = 0;
	while(i<10){
		printf("第%d次数据插入!\n",i+1);

		// 使用fseek获取文件偏移量，SEEK_CUR表示获取当前的偏移量
		fseek(fp, len, SEEK_CUR);
		fputs(writebuf,fp);

		len += sizeof(writebuf);

		i++;

	}
	
	// 使用ftell函数获取偏移量
	printf("ftell(fp) = %ld\n", ftello(fp));

	fclose(fp);
	return -2;
}
